home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / python-support / python2.6 / orca / dbusserver.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2009-04-20  |  5.1 KB  |  157 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. '''Exposes Orca as a DBus service for testing and watchdog purposes.'''
  5. __id__ = '$Id: dbusserver.py 4221 2008-09-15 08:11:23Z wwalker $'
  6. __version__ = '$Revision: 4221 $'
  7. __date__ = '$Date: 2008-09-15 04:11:23 -0400 (Mon, 15 Sep 2008) $'
  8. __copyright__ = 'Copyright (c) 2008 Sun Microsystems Inc.'
  9. __license__ = 'LGPL'
  10. import dbus
  11. import dbus.service as dbus
  12. import dbus.mainloop.glib as dbus
  13. import debug
  14. import settings
  15. loggingFileHandlers = { }
  16. loggingStreamHandlers = { }
  17.  
  18. class Server(dbus.service.Object):
  19.     
  20.     def __init__(self, object_path, bus_name):
  21.         dbus.service.Object.__init__(self, None, object_path, bus_name)
  22.  
  23.     
  24.     def setDebug(self, debugFile, debugLevel):
  25.         '''Sets the file to send detailed debug information.'''
  26.         if not settings.enableRemoteLogging:
  27.             return None
  28.         debug.println(debug.LEVEL_FINEST, 'DBus Logging.setDebug(%s, %d)' % (debugFile, debugLevel))
  29.         if debug.debugFile:
  30.             debug.debugFile.close()
  31.             debug.debugFile = None
  32.         
  33.         if debugFile and len(debugFile):
  34.             debug.debugFile = open('%s.debug' % debugFile, 'w', 0)
  35.         
  36.         debug.debugLevel = debugLevel
  37.  
  38.     setDebug = dbus.service.method(dbus_interface = 'org.gnome.Orca.Logging', in_signature = 'si', out_signature = '')(setDebug)
  39.     
  40.     def setLogFile(self, logFile):
  41.         '''Sets the file to send speech and braille logging information.'''
  42.         if not settings.enableRemoteLogging:
  43.             return None
  44.         import logging
  45.         debug.println(debug.LEVEL_FINEST, 'DBus Logging.setLogFile(%s)' % logFile)
  46.         for logger in [
  47.             'braille',
  48.             'speech']:
  49.             log = logging.getLogger(logger)
  50.             formatter = logging.Formatter('%(message)s')
  51.             
  52.             try:
  53.                 loggingFileHandlers[logger].flush()
  54.                 loggingFileHandlers[logger].close()
  55.                 log.removeHandler(loggingFileHandlers[logger])
  56.             except:
  57.                 settings.enableRemoteLogging
  58.  
  59.             if logFile and len(logFile):
  60.                 loggingFileHandlers[logger] = logging.FileHandler('%s.%s' % (logFile, logger), 'w')
  61.                 loggingFileHandlers[logger].setFormatter(formatter)
  62.                 log.addHandler(loggingFileHandlers[logger])
  63.             
  64.             log.setLevel(logging.INFO)
  65.         
  66.  
  67.     setLogFile = dbus.service.method(dbus_interface = 'org.gnome.Orca.Logging', in_signature = 's', out_signature = '')(setLogFile)
  68.     
  69.     def startRecording(self):
  70.         '''Tells Orca to start logging speech and braille output.'''
  71.         if not settings.enableRemoteLogging:
  72.             return None
  73.         debug.println(debug.LEVEL_FINEST, 'DBus Logging.startRecording')
  74.         import logging
  75.         import StringIO
  76.         for logger in [
  77.             'braille',
  78.             'speech']:
  79.             log = logging.getLogger(logger)
  80.             
  81.             try:
  82.                 (stringIO, handler) = loggingStreamHandlers[logger]
  83.                 handler.close()
  84.                 log.removeHandler(handler)
  85.                 stringIO.close()
  86.             except:
  87.                 settings.enableRemoteLogging
  88.  
  89.             formatter = logging.Formatter('%(message)s')
  90.             stringIO = StringIO.StringIO()
  91.             handler = logging.StreamHandler(stringIO)
  92.             handler.setFormatter(formatter)
  93.             log.addHandler(handler)
  94.             loggingStreamHandlers[logger] = [
  95.                 stringIO,
  96.                 handler]
  97.             log.setLevel(logging.INFO)
  98.         
  99.  
  100.     startRecording = dbus.service.method(dbus_interface = 'org.gnome.Orca.Logging', in_signature = '', out_signature = '')(startRecording)
  101.     
  102.     def stopRecording(self):
  103.         '''Tells Orca to stop logging speech and braille output and
  104.         to return whatever was recorded since the last call to
  105.         startRecording.'''
  106.         if not settings.enableRemoteLogging:
  107.             return ''
  108.         debug.println(debug.LEVEL_FINEST, 'DBus Logging.stopRecording')
  109.         import logging
  110.         import StringIO
  111.         result = ''
  112.         for logger in [
  113.             'braille',
  114.             'speech']:
  115.             log = logging.getLogger(logger)
  116.             
  117.             try:
  118.                 (stringIO, handler) = loggingStreamHandlers[logger]
  119.                 handler.flush()
  120.                 handler.close()
  121.                 log.removeHandler(handler)
  122.                 result += stringIO.getvalue()
  123.                 stringIO.close()
  124.             except:
  125.                 settings.enableRemoteLogging
  126.                 debug.printException(debug.LEVEL_OFF)
  127.  
  128.             stringIO = StringIO.StringIO()
  129.         
  130.         return result
  131.  
  132.     stopRecording = dbus.service.method(dbus_interface = 'org.gnome.Orca.Logging', in_signature = '', out_signature = 's')(stopRecording)
  133.  
  134. obj = None
  135.  
  136. def init():
  137.     '''Sets up the Orca DBus service.  This will only take effect once
  138.     the Orca main loop starts.'''
  139.     global obj
  140.     if obj:
  141.         return None
  142.     
  143.     try:
  144.         dbus.mainloop.glib.DBusGMainLoop(set_as_default = True)
  145.         bus = dbus.SessionBus()
  146.         name = dbus.service.BusName('org.gnome.Orca', bus = bus)
  147.         obj = Server('/', name)
  148.     except:
  149.         obj
  150.         debug.println(debug.LEVEL_WARNING, 'dbusserver.py: Could not initialize DBus server')
  151.  
  152.  
  153.  
  154. def shutdown():
  155.     pass
  156.  
  157.